import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.util.Vector;
import java.util.Iterator;

public class TestMazo_productosImpl {
Mazo_productos productos;
	
	@Before
	public void setUp () {
		productos=new Mazo_productosImpl();
		productos.preparar();
		
	}
	@After
	public void tearDown(){		
		productos=null;		
	}
	
	@Test
	public void testsacar_prod(){
		C_producto prod;
		prod=productos.sacar_prod();
		assert prod instanceof C_producto;
	}
	@Test
	public void testsacar_prodYdescartarYadd_descartes(){
		C_producto prod;					//un mazo de productos tiene menos de 100 cartas
		int i;								//este test comprueba si sacar_prod() pasa
		for (i=1;i<=100;i++){				//correctamente las cartas del monton principal
			prod=productos.sacar_prod();	//al de descartes y viceversa
			productos.descartar(prod);
		}
		prod=productos.sacar_prod();
		assert prod instanceof C_producto;
	}
	
	@Test
	public void testcoger_panes (){
		Vector <C_producto> panes;
		Iterator<C_producto> it;
		int i=0;
		panes=productos.coger_panes();
		it=panes.iterator();
		while (it.hasNext()){
			if (it.next().get_id()==1)
				i++;
		}
		assert (i==panes.size() && i==3);
	}
	@Test(expected = java.lang.ArrayIndexOutOfBoundsException.class)
	public void testsacar_prod2 (){
		Mazo_productos prods;
		prods=new Mazo_productosImpl();
		prods.sacar_prod();
	}
	
	
	@Test
	public void testpreparar (){		//comprueba que preparar añade correctamente productos
		Mazo_productos prods;			//y no lanza una excepcion como ocurre arriba
		prods=new Mazo_productosImpl();
		prods.preparar();
		assert prods.sacar_prod() instanceof C_producto;
	}
}